VACUUM, Autovacuum и bloat
Зачем это знать:
-
Это один из главных факторов деградации PostgreSQL со временем.
-
Влияет на индекс-only scans, на размер таблиц/индексов и на I/O.
Связанные темы:
Планировщик запросов и EXPLAIN
Мониторинг и диагностика PostgreSQL
Что делает VACUUM
-
Помечает “мёртвые” версии строк как свободные для повторного использования.
-
Обновляет visibility map (важно для index-only scan).
-
Не всегда “уменьшает файл” — чаще освобождает место внутри.
Autovacuum
-
Фоновая система, которая запускает VACUUM/ANALYZE автоматически.
-
Если autovacuum “не успевает”, симптомы:
- рост размеров таблиц/индексов (bloat),
- падение производительности,
- ухудшение планов (статистика не обновляется),
- рост нагрузки на I/O.
Bloat (раздувание)
Типовые причины:
-
много UPDATE/DELETE,
-
длинные транзакции,
-
редкий/слабый autovacuum,
-
неправильный fillfactor для таблиц с частыми UPDATE.
Что важно уметь обсуждать
-
“Почему нужно поддерживающее обслуживание” (VACUUM/ANALYZE/REINDEX).
-
Почему long-running transactions — риск для всей базы.
-
Почему после массовых изменений нужны ANALYZE и иногда VACUUM FULL/REINDEX (по ситуации).